
/**
 * 统一结果构建工厂类。
 * <p>
 * 用于快速生成各种业务场景下的Result对象，简化返回结构。
 */
package com.example.project.result;

/**
 * ResultFactory 提供静态方法用于构建不同类型的Result对象。
 */
public class ResultFactory {
    /**
     * 构建成功结果。
     * @param data 返回数据
     * @return 包含成功状态和数据的Result对象
     */
    public static Result buildSuccessResult(Object data){
        return buildResult(ResultCode.SUCCESS,"成功",data);
    }

    /**
     * 构建失败结果。
     * @param message 失败提示信息
     * @return 包含失败状态和提示信息的Result对象
     */
    public static Result buildFailResult(String message){
        System.out.println(buildResult(ResultCode.FAIL,message,null));
        return buildResult(ResultCode.FAIL,message,null);
    }

    /**
     * 构建未登录结果。
     * @return 未登录状态的Result对象
     */
    public static Result buildAccountOntLogin(){
        return buildResult(ResultCode.ACCOUNT_NOT_LOGIN,"用户未登录",null);
    }

    /**
     * 构建无权限结果。
     * @return 无权限状态的Result对象
     */
    public static Result buildUnauthorized(){
        return buildResult(ResultCode.ACCOUNT_NOT_LOGIN,"没有权限",null);
    }

    /**
     * 根据枚举类型构建通用结果。
     * @param resultCode 结果枚举
     * @param message 提示信息
     * @param data 返回数据
     * @return Result对象
     */
    public static Result buildResult(ResultCode resultCode,String message,Object data){
        return buildResult(resultCode.code,message,data);
    }
    /**
     * 根据状态码构建通用结果。
     * @param resultCode 状态码
     * @param message 提示信息
     * @param data 返回数据
     * @return Result对象
     */
    public static Result buildResult(int resultCode,String message,Object data){
        return new Result(resultCode,message,data);
    }

}

